package pl.edu.agh.iosr.gamblingzone.utils;

import pl.edu.agh.iosr.gamblingzone.dao.AbstractEventDAO;
import pl.edu.agh.iosr.gamblingzone.dao.BetDAO;
import pl.edu.agh.iosr.gamblingzone.dao.BettingSlipDAO;
import pl.edu.agh.iosr.gamblingzone.dao.DisciplineDAO;
import pl.edu.agh.iosr.gamblingzone.dao.GroupDAO;
import pl.edu.agh.iosr.gamblingzone.dao.MoneyVoucherDAO;
import pl.edu.agh.iosr.gamblingzone.dao.MoneyVoucherRequestDAO;
import pl.edu.agh.iosr.gamblingzone.dao.ParticipantDAO;
import pl.edu.agh.iosr.gamblingzone.dao.QuoteDAO;
import pl.edu.agh.iosr.gamblingzone.dao.UserDAO;

/**
 * A factory for creating DAO objects.
 */
public interface DAOFactory {
	
	/**
	 * Gets the event dao.
	 * 
	 * @return the event dao
	 */
	AbstractEventDAO getEventDAO();
	
	/**
	 * Gets the bet dao.
	 * 
	 * @return the bet dao
	 */
	BetDAO getBetDAO();
	
	/**
	 * Gets the slip dao.
	 *
	 * @return the slip dao
	 */
	BettingSlipDAO getSlipDAO();
	
	/**
	 * Gets the discipline dao.
	 * 
	 * @return the discipline dao
	 */
	DisciplineDAO getDisciplineDAO();
	
	/**
	 * Gets the group dao.
	 * 
	 * @return the group dao
	 */
	GroupDAO getGroupDAO();
	
	/**
	 * Gets the voucher dao.
	 * 
	 * @return the voucher dao
	 */
	MoneyVoucherDAO getVoucherDAO();
	
	/**
	 * Gets the voucher request dao.
	 * 
	 * @return the voucher request dao
	 */
	MoneyVoucherRequestDAO getVoucherRequestDAO();
	
	/**
	 * Gets the participant dao.
	 * 
	 * @return the participant dao
	 */
	ParticipantDAO getParticipantDAO();
	
	/**
	 * Gets the quote dao.
	 * 
	 * @return the quote dao
	 */
	QuoteDAO getQuoteDAO();
	
	/**
	 * Gets the user dao.
	 * 
	 * @return the user dao
	 */
	UserDAO getUserDAO();
}
